package com.zifuchuan.zuoye;

import java.util.Random;

/*
在登录注册页面中，除了用户名和密码外，通常也会包含验证码。
验证码是用来区分用户是计算机还是人，防止恶意破解密码、刷票、灌水等行为。
请查看Random、StringBuilder相关API，定义方法，获取一个包含4个字符的验证码，
每一位字符是随机选择的字母和数字，可包含a-z,A-Z,0-9。
例如：7Kt5
1、定义方法，返回值是String，参数列表为空。
2、定义StringBuilder对象，将可选择的字符都放到StringBuilder对象中。
	2.1、定义循环从a-z，使用StringBuilder的append方法依次添加所有小写字母
	2.2、定义循环从A-Z，使用StringBuilder的append方法依次添加所有大写字母
	2.3、定义循环从0-9，使用StringBuilder的append方法依次添加所有数字字符
3、创建Random对象。定义一个空字符串用于保存验证码
4、定义一个执行4次的循环，用于获取4个字符。
	4.1、在循环中，使用Random的nextInt方法，随机获取一个从索引0（包含）到字符串的长度（不包含）的索引。
	4.2、使用StringBuilder的charAt方法，获取该索引上的字符，将其拼接到验证码字符串中。
5、返回结果，并在主方法中调用方法查看结果。
 */
public class HomeWork02 {
    public static void main(String[] args) {
        String code = getRandomCode();
        System.out.println(code);
    }

    //  定义方法，返回值是String，参数列表为空。
    public static String getRandomCode() {
        // 定义StringBuilder对象，将可选择的字符都放到StringBuilder对象中。
        StringBuilder sb = new StringBuilder();
        // 定义循环从a-z，使用StringBuilder的append方法依次添加所有小写字母
        for (char ch = 'a'; ch <= 'z'; ch++) {
            sb.append(ch);
        }
        // 定义循环从A-Z，使用StringBuilder的append方法依次添加所有大写字母
        for (char ch = 'A'; ch <= 'Z'; ch++) {
            sb.append(ch);
        }
        //  定义循环从0-9，使用StringBuilder的append方法依次添加所有数字字符
        for (char ch = '0'; ch <= '9'; ch++) {
            sb.append(ch);
        }
        // 创建Random对象。定义一个空字符串用于保存验证码
        Random r = new Random();
        String code = "";
        // 定义一个执行4次的循环，用于获取4个字符。
        for (int i = 0; i < 4; i++) {
	//4.1、在循环中，使用Random的nextInt方法，随机获取一个从索引0（包含）到字符串的长度（不包含）的索引。
            int index = r.nextInt(sb.length());

            //	4.2、使用StringBuilder的charAt方法，获取该索引上的字符，将其拼接到验证码字符串中。
            code += sb.charAt(index);
        }

        return code;
    }
}


